<?php

class MenuModel {

    private $conn;
    static private $menu = 'tb_menu';
    static private $menu_group = 'tb_menu_group';
    private $primarykey;

    function __construct() {
        global $db_config;
        $this->conn = new DbYspMysqlPdo($db_config);
        $this->primarykey = isset($_GET['primarykey']) ? intval($_GET['primarykey']) : 0;
    }

    /**
     * 菜单添加
     * @param type $tb_name 表名
     * @param type $data 数据
     * @return type 返回数据 
     */
    function addMenu($tb_name, $data) {
        return $this->conn->queryInsert($tb_name, $data);
    }

    /**
     * 取总记录条数
     * @param string $table_name 表名
     * @param string $where 条件
     * @return array 返回一个元素的一维数组
     */
    function getTotal($table_name, $where = '') {
        $rs = $this->conn->getOneSelect($table_name, 'COUNT(1) as totals', $where);
        return $rs['totals'];
    }

    /**
     * 执行SELECT语句
     * @param string $table_name 表名
     * @param array $field_str 字段列表，用逗号分隔
     * @param string $where 查询条件
     * @param string $limit 限制行数
     * @param string $ordery_by 排序方式
     * @param string $group_by 分组方式
     * @return array 返回为数组的结果
     */
    function getList($table_name, $field_str = '*', $where = '', $ordery_by = '', $limit = '', $group_by = '', $haveing = '') {
        return $this->conn->getMoreSelect($table_name, $field_str, $where, $ordery_by, $limit, $group_by, $haveing);
    }

    /**
     * 只取一行记录
     * @param string $table_name 表名
     * @param string $field_str 字段列表，中间用逗号分隔
     * @param string $where WHERE条件，写的时候带WHERE
     * @param string $ordery_by 排序
     * @param string $group_by 分组
     * @param string $having having统计条件
     * @return resources|boolean 返回数组或者布尔值
     */
    function getOneRow($table_name, $field_str = '*', $where = '', $ordery_by = '') {
        return $this->conn->getOneSelect($table_name, $field_str, $where, $ordery_by);
    }

    /**
     * 删除操作
     * @param string $table_name 表名
     * @param string $where 条件
     * @param string $limit 限制行数
     * @param string $order_by 排序方法
     * @param string $group_by  分组方式
     * @param string $having 条件
     * @return object 返回结果
     */
    function Del($table_name, $id_name) {
        return $this->conn->sqlDelete($table_name, "WHERE $id_name=" . $this->primarykey);
    }

    function getView($table_name, $id_name) {
        return $this->conn->getOneSelect($table_name, '*', "WHERE $id_name=" . $this->primarykey);
    }

    /**
     * 执行UPDATE SQL语句
     * @param string $table_name 表名
     * @param array $field_array 字段一维数组
     * @param string $where WHERE条件
     * @return object 返回一个结果对象
     */
    function Edit($table_name, $field_array, $id_name, $num_no_strong = array(0)) {
        return $this->conn->sqlUpdate($table_name, $field_array, "WHERE $id_name=" . $this->primarykey, $num_no_strong);
    }

    //按条件修改一条指定的记录
    function Update($table_name, $field_array, $where, $num_no_strong = array(0)) {
        return $this->conn->sqlUpdate($table_name, $field_array, $where, $num_no_strong);
    }

    /**
     * 读取当前某一个产品里面有多少图片
     * @param int $pid 主键ID
     * @return int 图片数量
     */
    function getProductImgNum($table_name,$pid) {
        $info = $this->conn->getOneSelect($table_name, 'Fimgs', "WHERE Fid=$pid");
        $json_image = BaseYsp::jsonDeCode($info['Fimgs']);
        return count($json_image);
    }

    /**
     * 向图片新闻表中的某一条记录中追加式更新一条图片记录
     * @param int $pid 主键ID号
     * @param int $current_image_path 图片路径
     */
    function updateMoreImage($table_name,$pid, $current_image_path) {
        $info = $this->conn->getOneSelect($table_name, 'Fid,Fimgs', "WHERE Fid=$pid");
        //反解JSON
        if (!empty($info['Fimgs'])) {
            $json_image = BaseYsp::jsonDeCode($info['Fimgs']);
        }
        $json_image[] = array(
            'imagePath' => $current_image_path,
            'time' => time()
        );
        $data['Fimgs'] = BaseYsp::jsonEnCode($json_image);
        $this->conn->sqlUpdate($table_name, $data, "WHERE Fid=$pid");
    }

}
